方法一(利用解构赋值...和Set的唯一性)
先将两个数组合并再通过Set()去重
let arr1 = [1, 2, 3, 4, 5]
let arr2 = [4, 5, 6, 7, 8]
let result = [...new Set(arr1.concat(arr2))]
console.log(result) // [1, 2, 3, 4, 5, 6, 7, 8]
方法二(reduce)
先合并和排序,然后通过reduce参数进行对比,判断上一个和当前元素不相同时push到新的数组中。
let arr1 = [1, 2, 3, 4, 5]
let arr2 = [4, 5, 6, 7, 8]
let arr = [...arr1, ...arr2].sort()
let result = [arr[0]]
arr.reduce((pre, now) => {
if (pre !== now) {
result.push(now)
}
return now
})
console.log(result) // [1, 2, 3, 4, 5, 6, 7, 8]
方法三(转json对象)
将数组转成JSON对象,数组每个元素都作为对象的键和值,如果元素相同,则对象键和值会覆盖,达到去重效果,接着再使用Object.values提取对象的值返回一个新的数组。
let arr1 = [1, 2, 3, 4, 5]
let arr2 = [4, 5, 6, 7, 8]
let obj = {}
arr1.forEach((item) => {
obj[item] = item
})
arr2.forEach((item) => {
obj[item] = item
})
let result = Object.values(obj)
console.log(result) // [1, 2, 3, 4, 5, 6, 7, 8]
原文出处:http://www.dongblog.com/notes/32.html
来源:博客网 转载请注明出处!